
import backgroundTaskManager from '@ohos.resourceschedule.backgroundTaskManager';
import { BusinessError } from '@ohos.base';
import { Task } from './TaskConst';
export default class TaskManager {

  /**
   * https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/task-management/transient-task.md/
   * 申请短时任务,时机等信息见文档.
   * 一般用于app切后台时，需要执行一些清理和标注工作，并取消短时任务。
   */
  public  static createShortTaskManager(task:Task){
    let myReason = task.reason;   // 申请原因
    let delayInfo = backgroundTaskManager.requestSuspendDelay(myReason, () => {
      // 回调函数。应用申请的短时任务即将超时，通过此函数回调应用，执行一些清理和标注工作，并取消短时任务
      console.info('suspend delay task will timeout');
      try {
        task.action();
      }catch(e){
        console.error("短时任务执行异常",e)
      }
      //最后要取消短时任务
      backgroundTaskManager.cancelSuspendDelay(task.id);
    })
    task.requestId = delayInfo.requestId;
    task.actualDelayTime = delayInfo.actualDelayTime;
  }
  /**
   * 获取短时任务剩余时间 详见文档,每日最多10分钟,每次最多3分,低电量最多1分
   * @param id
   * @param callback
   */
  static  getShortTaskDelayTime(id:number,callback:(delay:number)=>void){
    backgroundTaskManager.getRemainingDelayTime(id).then((res: number) => {
      callback(res);
    }).catch((err: BusinessError) => {
      console.error(`Failed to get remaining delay time. Code: ${err.code}, message: ${err.message}`);
    })
  }





}